package com.rankeiot.core.config;

import com.rankeiot.core.Config;
import com.rankeiot.core.data.StringValue;

public interface IConfigItem {
    /**
     * 配置项key值，一般为Enum的字面值
     * @return
     */
    String name();

    /**
     * 配置项所属分组
     * @return
     */
    default String group(){
      return  this.getClass().getSimpleName();//.replaceFirst("Config$","").toLowerCase();
    }

    /**
     * 配置项全名
     * @return
     */
    default String fullName(){
        return group()+"."+name();
    }

    /**
     * 获取配置项的值
     * @return
     */
    default StringValue value(){
       return StringValue.of(Config.getStr(fullName()));
    }

    /**
     * 设置配置项的值
     * @param value
     */
    default void setValue(String value){
        Config.saveConfig(fullName(),value);
    }
    default String strValue(){
        return Config.getStr(fullName());
    }
}
